package com.zlp.mall.search.domain;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 搜索商品的信息
 * @since 2021-11-3 11:14:50
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Document(indexName = "pms", type = "product",shards = 1,replicas = 0)
public class EsProduct implements Serializable {
    private static final long serialVersionUID = -1L;


    /**
     * 作用在成员变量，标记一个字段作为id主键
     */
    @Id
    private Long id;
    @Field(type = FieldType.Keyword)

    /**
     * 商品编号
     */
    private String productSn;

    /**
     * 品牌ID
     */
    private Long brandId;

    /**
     * 品牌名称
     */
    @Field(type = FieldType.Keyword)
    private String brandName;

    /**
     * 商品分类ID
     */
    private Long productCategoryId;

    /**
     * 商品分类名称
     */
    @Field(type = FieldType.Keyword)
    private String productCategoryName;

    /**
     * 商品图片
     */
    private String pic;

    @Field(analyzer = "ik_max_word",type = FieldType.Text)
    private String name;

    /**
     * 商品标题
     */
    @Field(analyzer = "ik_max_word",type = FieldType.Text)
    private String subTitle;

    /**
     * 商品关键字搜索
     */
    @Field(analyzer = "ik_max_word",type = FieldType.Text)
    private String keywords;

    /**
     * 价格
     */
    private BigDecimal price;

    /**
     * 销售量
     */
    private Integer sale;

    /**
     * 新品状态:0->不是新品；1->新品
     */
    private Integer newStatus;

    /**
     * 推荐状态；0->不推荐；1->推荐
     */
    private Integer recommandStatus;

    /**
     * 库存
     */
    private Integer stock;

    /**
     * 促销类型
     */
    private Integer promotionType;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 商品属性
     */
    @Field(type = FieldType.Nested)
    private List<EsProductAttributeValue> attrValueList;
}
